package com.shujia.jichu

import scala.collection.mutable

object Demo18Map {
  def main(args: Array[String]): Unit = {
    /**
     * Map: 元素是键值对的集合 不可变
     */
    //创建一个Map集合
    val map1: Map[Any, Any] = Map((1001, "张三"), (1002, "李四"), (1003, "王五"), 1004 -> "赵六")
    println(map1)
    println("="*100)

    //通过键获取值
    println(map1(1001))
    println("="*100)
//    println(map1(1009)) // 如果没找到就报错
    //通过键获取值，如果没找到返回默认值
    println(map1.getOrElse(1009,"未找到数据"))
    println("="*100)

    val map2: Map[String, Int] = Map(("1001", 18), ("1002", 19), ("1003", 10), "1004" -> 15)
    //需求：将每一个学生的年龄+1
    val map3: Map[String, Int] = map2.map((kv: (String, Int)) => {
      //这里每个键值对，在map中被封装成一个2元组(key,value)
      val key: String = kv._1
      val value: Int = kv._2
      (key, value + 1)
    })
    println(s"map2: ${map2}")
    println(s"map3: ${map3}")

    println("="*100)
    //获取Map集合中所有键或所有值
    val keys: Iterable[String] = map2.keys
    println(keys)
    val values: Iterable[Int] = map2.values
    println(values)
    println("="*100)

    /**
     * 可变的Map的集合
     *
     */
    val hashMap1: mutable.HashMap[String, Int] = new mutable.HashMap[String, Int]()

    //使用put函数添加元素
//    hashMap1.put("张三1",18)
//    hashMap1.put("张三2",19)
//    hashMap1.put("张三3",12)
//    hashMap1.put("张三1",17)
//    println(hashMap1)

//    hashMap1.+=(("张三1",18))
//    hashMap1 += ("张三1",18)
    hashMap1 += "张三1" -> 18
    hashMap1.put("张三2",19)
    hashMap1.put("张三3",12)
    hashMap1.put("张三1",17)
    println(hashMap1)
    println("="*100)
    //删除元素
    hashMap1.-=("张三1")
    println("="*100)
    println(hashMap1)





  }
}
